package com.boarsoft.boar.proj;

import com.boarsoft.bean.ReplyInfo;
import com.boarsoft.boar.entity.DirInfo;
import com.boarsoft.boar.entity.ProjInfo;
import com.boarsoft.common.dao.PagedResult;
import com.boarsoft.hibernate.biz.SimpleBiz;

public interface ProjBiz extends SimpleBiz {
	/**
	 * 查询现有ProjInfo
	 * 
	 * @param key
	 * @param orderBy
	 * @param pageNo
	 * @param pageSize
	 * @return
	 */
	PagedResult<ProjInfo> list(String key, String orderBy, int pageNo, int pageSize);

	/**
	 * 保存系统/工程，因为已在目录树中查了重，这里不需要再查
	 * 
	 * @param d
	 * @param a
	 * @return
	 */
	ReplyInfo<Object> add(DirInfo d, ProjInfo a);


	/**
	 * 删除某个保存系统/工程，需同步删除目录(dir_info表中相应数据)
	 * 
	 * @param id
	 * @return
	 */
	void delete(String id);

	/**
	 * 更新某个系统/工程的信息
	 * 
	 * @param d
	 * @param a
	 * @return
	 */
	ReplyInfo<Object> update(DirInfo d, ProjInfo a);

	/**
	 * 获取系统/工程信息
	 * 
	 * @param id
	 * @return
	 */
	ProjInfo get(String id);

	/**
	 * 启用系统/工程
	 * 
	 * @param id
	 * @return
	 */
	boolean start(String id);

	/**
	 * 停用系统/工程
	 * 
	 * @param id
	 * @return
	 */
	boolean stop(String id);

	/**
	 * 复制ID为sourceId的节点到ID为parentId的节点下
	 * 
	 * @param sourceId
	 *            被拷贝的节点的ID
	 * @param parentId
	 *            目标节点（新节点的父节点）
	 * @param newId
	 *            新节点的ID（需要与DirInfo一致）
	 * @return
	 */
	String copy(String sourceId, String parentId, String newId);
}
